# encoding: UTF-8

class LoginController < ApplicationController
  
  layout "application"

  def index
    session[:administrador_id] = nil
    session[:medico_id] = nil
    session[:paciente_id] = nil
  end

  def autenticar
    if params[:usuario][:login].present?
      login = params[:usuario][:login]
      # Verifica se é um administrador
      administrador = Usuarios::Administrador.buscar_ativos(:login => login).first
      if not administrador.nil?
        render :update do |page|
          if administrador.validar_login(params[:usuario][:senha])
            session[:administrador_id] = administrador.id.to_s
            page.redirect_to("/usuarios/administrador/visualizar?id=#{administrador.id.to_s}")
          else
            page.replace_html('erro_login', t('login.auth_fail'))
            page.show('erro_login')
            page.select('.noicon').each do |div|
              div.show
            end
            page << "loaded();"
          end
        end
      else
        medico = Usuarios::Medico.buscar_ativos(:login => params[:usuario][:login]).first
        if not medico.nil?
          render :update do |page|
            if medico.validar_login(params[:usuario][:senha])
              session[:medico_id] = medico.id.to_s
              page.redirect_to("/usuarios/paciente/listar")
            else
              page.replace_html('erro_login', t('login.auth_fail'))
              page.show('erro_login')
              page.select('.noicon').each do |div|
                div.show
              end
              page << "loaded();"
            end
          end
        else
          paciente = Usuarios::Paciente.buscar_ativos(:login => params[:usuario][:login]).first
          if not paciente.nil?
            render :update do |page|
              if paciente.validar_login(params[:usuario][:senha])
                session[:paciente_id] = paciente.id.to_s
                page.redirect_to("/usuarios/paciente/visualizar?id=#{paciente.id.to_s}")
              else
                page.replace_html('erro_login', t('login.auth_fail'))
                page.show('erro_login')
                page.select('.noicon').each do |div|
                  div.show
                end
                page << "loaded();"
              end
            end                
          else
            render :update do |page|
              page.replace_html('erro_login', t('login.auth_fail'))
              page.show('erro_login')
              page.select('.noicon').each do |div|
                div.show
              end
              page << "loaded();"
            end
          end
        end
      end
    else
      render :update do |page|
        page.replace_html('erro_login', t('login.blank_login'))
        page.show('erro_login')
        page.select('.noicon').each do |div|
          div.show
        end
        page << "loaded();"
      end
    end
  end

  def logout
    if session[:administrador_id].present? or session[:paciente_id].present? or session[:medico_id].present?
      reset_session
      redirect_to :action => :index
    end
  end

  def lembrar_senha

  end

  def enviar_senha
    render :update do |page|
      page.hide("erro_email")
      page.hide("sucesso_email")
      page.hide("erro_campo")
      page.hide("noiconid")
      if params[:usuario][:email].present?
        usuario = Usuarios::Medico.buscar_ativos(:email => params[:usuario][:email]).first
        if usuario.nil?
          usuario = Usuarios::Paciente.buscar_ativos(:email => params[:usuario][:email]).first
        end
        if not usuario.nil?
          nova_senha = (0...8).map{65.+(rand(25)).chr}.join
          if usuario.atualizar({:senha => nova_senha, :confirmacao_senha => nova_senha})
            UsuarioMailer.nova_senha(usuario, nova_senha).deliver
            page.show("sucesso_email")
          else
            page.show("erro_email")
          end
        else
          page.replace_html("erro_campo", t('login.invalid_email'))
          page.show("erro_campo")
          page.show("noiconid")
        end
      else
        page.replace_html("erro_campo", t('login.blank_email'))
        page.show("erro_campo")
        page.show("noiconid")
      end
      page << "loaded();"
    end
  end
end

